#include "bits/stdc++.h"

using namespace std;

#define CLEAR(x) memset(x, 0, sizeof(x))

const int N = (1e5 + 10)*31, M = 1e5 + 10;

int s[M];
int trie[N][2], cnt[N], idx;
int n,m;

void insert(int x, int v) {
    int p = 0;
    for (int i=30; i>=0; i--) {
        int u = x >> i & 1;
        if (!trie[p][u]) {
            trie[p][u] = ++idx;
        }
        p=trie[p][u];
        cnt[p]+=v;
    }
}


int query(int x) {
    int res=0, p = 0;
    for (int i=30; i>=0; i--) {
        int t = x >> i & 1;
        if (cnt[trie[p][!t]]) {
            p = trie[p][!t];
            res = res * 2 + 1; 
        } else {
            p = trie[p][t];
            res = res * 2;
        }
    }
    return res;
}


int main() {
    cin >>n>>m;
    for(int i=1; i<=n; i++) {
        int si;
        cin>>si;
        s[i]=s[i-1]^si;
    }

    int res=0;
    insert(s[0], 1); // insert into trie

    for (int i=1; i<=n; i++) {
        if (i>m) insert(s[i-m-1], -1);
        res=max(res, query(s[i]));
        insert(s[i], 1);
    }
    cout<<res<<endl;
    return 0;
}
